package com.example.mapper;

import com.example.entity.AdminReports;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * 管理员数据报表Mapper接口
 */
@Mapper
public interface AdminReportsMapper {

    /**
     * 插入管理员报表数据
     */
    int insert(AdminReports adminReports);

    /**
     * 根据日期更新管理员报表数据
     */
    int updateByReportDate(AdminReports adminReports);

    /**
     * 根据日期查询管理员报表数据
     */
    AdminReports selectByReportDate(@Param("reportDate") LocalDate reportDate);

    /**
     * 查询日期范围内的管理员报表数据
     */
    List<AdminReports> selectByDateRange(@Param("startDate") LocalDate startDate, 
                                        @Param("endDate") LocalDate endDate);

    /**
     * 查询最新的管理员报表数据
     */
    AdminReports selectLatest();

    /**
     * 查询总收入统计
     */
    BigDecimal selectTotalRevenue(@Param("startDate") LocalDate startDate, 
                                 @Param("endDate") LocalDate endDate);

    /**
     * 查询总利润统计
     */
    BigDecimal selectTotalProfit(@Param("startDate") LocalDate startDate, 
                                @Param("endDate") LocalDate endDate);

    /**
     * 查询总成本统计
     */
    BigDecimal selectTotalCost(@Param("startDate") LocalDate startDate, 
                              @Param("endDate") LocalDate endDate);

    /**
     * 删除指定日期的报表数据
     */
    int deleteByReportDate(@Param("reportDate") LocalDate reportDate);

    /**
     * 插入或更新管理员报表数据（如果日期已存在则更新）
     */
    int insertOrUpdate(AdminReports adminReports);
} 